1. Technical Field
The present invention relates in general to an improved computer operating system, and in particular relates to an improved computer operating system for manipulating the orientation of an output image of the computer. Still more particularly, the present invention relates to a computer operating system that provides multiple degrees of rotation to a graphic image output from the computer to a peripheral device, such as a display.
2. Description of the Related Art
Computer graphics involves the generation, representation, manipulation, processing, and display of data by a computer. Today, many computers, particularly those in the PC, microcomputer, or workstation categories, have graphics functionality. Their central components are a graphical display device, usually a cathode ray tube (CRT), and/or other output devices such as printers or video players, and one or more input devices such as a keyboard or mouse. Computer graphics encompasses a wide variety of applications. These applications include computer-aided design, scientific visualization, computer animation, 3-dimensional imaging, and digital video applications.
Computer graphics systems comprise several different output components in which to display computer-generated images. These components are classified into hard copy technologies and display technologies. Hard copy technologies include printers, pin plotters, dot matrix printers, laser printers, ink-jet plotters, etc. These devices use either a raster or vector style of drawing. The raster style uses discreet dots, and the vector style uses a continuous drawing motion. The most common component of graphics displays has been the CRT, but other graphics displays include liquid crystal displays, light emitting diode displays and plasma panels. A raster CRT scans the image, one row at a time, from a matrix whose elements correspond to a pixel, or point on the screen. This matrix is referred to as the frame buffer and allows for a constant refresh rate, usually sixty times per second.
An operating system is a set of programs that controls the operation of a computer. An operating system's primary function is the management of all hardware and software resources in the computer. It manages processors, memory, I/O devices, and networks. The operating system is accessed by a collection of system calls provided by an application program interface (API). System calls provide the mechanism for an application program to obtain services from the system. The operating system includes a file system and terminal handling for implementing system calls. The operating system also includes basic capabilities including interprocess communication, memory management, and process management. The operating system interfaces at its lowest level with device drivers that provide the interface directly with external peripheral devices, particularly I/O devices. For each of these peripheral devices, such as a disk drive, network adapter, laser printer, or CRT display, a specialized device driver must exist having specialized capability to communicate with that particular peripheral device. Device drivers accept requests to read or write data, or determine the status of the hardware, or to display a graphic image.
In traditional graphics systems, image data are stored either as Cartesian coordinates or as vectors that define geometric objects such as a polygon. This data may be manipulated by a graphics processor through the geometrical transformations of scaling, translating, and rotating in a reference system known as the world coordinate system. Physical devices use their own coordinate systems known as screen coordinate systems. In order to ready the image for display, a viewing transformation takes place, which changes the image data to the corresponding device-specific screen coordinates. A window or portion of the image presented by the application is chosen to be shown in an area of the display. Because some of the image data could be outside this window, a clipping operation is necessary.
In order to render graphic images, rasterization is performed by a graphics engine in rendering the image to produce standard pixel data that can then be processed by the output device's device driver. The graphics engine receives image data from an application executing in the computer for display or printing. As used herein, a graphics engine is a combination of graphics hardware and software for rendering a display image. A complex picture image is received from an application program, typically mapped in Cartesian coordinates or as vectors. The graphics engine then renders the image as graphics primitives, such as lines, polygons, and character strings that are output to the output device's device driver.
Traditionally, the application program, system or user may further specify that the image be rotated at the output device. Today's operating systems require the device driver to manage its output stream of data to its output device, including any such requested rotation of the image. Therefore, most available printer device drivers support their own translation code for providing either a portrait or landscape printing of the image data provided to the device driver. In addition, any display device drivers that support rotation of the displayed image have to be equipped to specifically handle any such rotation. Operating systems do not provide a software support to device drivers that enables the orientation of the output image to be manipulated. Consequently, independent hardware vendors must develop special device driver code for handling portrait/landscape mode on hard copy devices and 90/180 degree rotation for display devices.
It would be desirable to provide an operating system that provides a capability to rotate an image output to a device driver at rendering time. This would allow much simpler device driver software to be utilized in a computer system, while still having the capability of rotating an output image. Further, this would eliminate the need for redundant code being developed and included within each device driver package. Such capability would reduce the expense and complexity of output imaging devices. Still further, this would allow a user or the system to set a rotation for any output image sent to the peripheral device, regardless of what application sent the image. This would be particularly advantageous for a computer configured with a non-standard output device. For example, some personal digital assistant (PDA) hand-held computers have an aspect ratio that is narrower and longer than the standard computer monitor. Thus, it would be desirable to provide a mechanism that rotates all images output to the display of a PDA by ninety degrees, independent of the application sending the image.